home *** CD-ROM | disk | FTP | other *** search
/ Assassins - Ultimate CD Games Collection 2 / Assassins 2 - Ultimate Games No. 2 (1995)(Weird Science)[!][Amiga-CD32-CDTV].iso / arcade / jar / src / tetwbench.s < prev   
Text File  |  1995-01-01  |  3KB  |  199 lines

  1.  
  2. ;    A fragment of code borrowed from 'music' a pd music demo from
  3. ;    Commodore and resourced using resource.
  4. ;
  5.  
  6.     public    _main
  7.     public    AmigaJunk
  8.     public    _stdout
  9.  
  10. AmigaJunk
  11.     lea    initialSP(pc),a1
  12.     move.l    sp,(a1)
  13.     lea    dosCmdLen(pc),a1
  14.     move.l    d0,(a1)
  15.     lea    dosCmdBuf(pc),a1
  16.     move.l    a0,(a1)
  17.     lea    returnMsg(pc),a1
  18.     move.l    #0,(a1)
  19.     move.l    4,a6
  20.     sub.l    a1,a1
  21.     jsr    -$0126(a6)                ; allocate memory
  22.     move.l    d0,a4
  23.     tst.l    $00AC(a4)
  24.     beq    fromWorkbench
  25. fromCLI    bsr    openDOS
  26.     clr.l    -(sp)
  27.     bsr    _FindTask
  28.     addq.l    #4,sp
  29.     move.l    d0,a0
  30.     move.l    $00AC(a0),a0
  31.     add.l    a0,a0
  32.     add.l    a0,a0
  33.     move.l    $0010(a0),a0
  34.     add.l    a0,a0
  35.     add.l    a0,a0
  36.     movem.l    d2/a2/a3,-(sp)
  37.     lea    argvBuffer(pc),a2
  38.     lea    argvArray(pc),a3
  39.     moveq.l    #1,d2
  40.     moveq.l    #0,d0
  41.     move.b    (a0)+,d0
  42.     move.l    a2,(a3)+
  43.     bra.s    1$
  44.  
  45. 2$    move.b    (a0)+,(a2)+
  46. 1$    dbra    d0,2$
  47.     clr.b    (a2)+
  48.     move.l    dosCmdLen(pc),d0
  49.     move.l    dosCmdBuf(pc),a0
  50. 3$    move.b    (a0)+,d1
  51.     subq.l    #1,d0
  52.     ble.s    parmExit
  53.     cmp.b    #$20,d1
  54.     ble.s    3$
  55.     addq.l    #1,d2
  56.     move.l    a2,(a3)+
  57.     bra.s    5$
  58.  
  59. 4$    move.b    (a0)+,d1
  60.     subq.l    #1,d0
  61.     cmp.b    #$20,d1
  62.     ble.s    6$
  63. 5$    move.b    d1,(a2)+
  64.     bra.s    4$
  65.  
  66. 6$    clr.b    (a2)+
  67.     bra.s    3$
  68.  
  69. parmExit
  70.     clr.b    (a2)+
  71.     clr.l    (a3)+
  72.     move.l    d2,d0
  73.     movem.l    (sp)+,d2/a2/a3
  74.     pea    argvArray(pc)
  75.     move.l    d0,-(sp)
  76.     bsr    _Input
  77.     lea    _stdin(pc),a0
  78.     move.l    d0,(a0)
  79.     bsr    _Output
  80.     lea    _stdout(pc),a0
  81.     move.l    d0,(a0)+
  82.     move.l    d0,(a0)
  83.     bsr    _main
  84.     moveq.l    #0,d0
  85.     move.l    initialSP(pc),sp
  86.     rts
  87.  
  88. fromWorkbench
  89.     bsr    openDOS
  90.     bsr    waitmsg
  91.     lea    returnMsg(pc),a0
  92.     move.l    d0,(a0)
  93.     move.l    d0,-(sp)
  94.     move.l    d0,a2
  95.     move.l    $0024(a2),d0
  96.     beq.s    docons
  97.     move.l    _DOSBase(pc),a6
  98.     move.l    d0,a0
  99.     move.l    0(a0),d1
  100.     jsr    -$007E(a6)
  101. docons    move.l    $0020(a2),d1
  102.  
  103. ;    beq.s    domain
  104.  
  105.  lea    mywindow(pc),a0
  106.  move.l    a0,d1
  107.  
  108.     move.l    #$000003ED,d2
  109.     jsr    -$001E(a6)
  110.     lea    _stdin(pc),a0
  111.     move.l    d0,(a0)+
  112.     move.l    d0,(a0)+
  113.     move.l    d0,(a0)
  114.     beq.s    domain
  115.     lsl.l    #2,d0
  116.     move.l    d0,a0
  117.     move.l    8(a0),$00A4(a4)
  118. domain    clr.l    -(sp)
  119.     bsr    _main
  120.  
  121.  move.l    _stdin(pc),d1
  122.  beq.s    1$
  123.  move.l    _DOSBase(pc),a6
  124.  jsr    -$24(a6)
  125. 1$
  126.  
  127.  
  128.     moveq.l    #0,d0
  129.     bra.s    exit2
  130.  
  131. _exit    move.l    4(sp),d0
  132. exit2    move.l    initialSP(pc),sp
  133.     move.l    d0,-(sp)
  134.     move.l    returnMsg(pc),d1
  135.     beq.s    exitToDOS
  136.     move.l    4,a6
  137.     jsr    -$0084(a6)
  138.     move.l    returnMsg(pc),a1
  139.     jsr    -$017A(a6)
  140. exitToDOS
  141.     move.l    (sp)+,d0
  142.     rts
  143.  
  144. noDOS    movem.l    d7/a5/a6,-(sp)
  145.     move.l    #$00038007,d7
  146.     move.l    4,a6
  147.     jsr    -$006C(a6)
  148.     movem.l    (sp)+,d7/a5/a6
  149.     moveq.l    #$64,d0
  150.     bra.s    exit2
  151.  
  152. waitmsg    lea    $005C(a4),a0
  153.     jsr    -$0180(a6)
  154.     lea    $005C(a4),a0
  155.     jsr    -$0174(a6)
  156.     rts
  157.  
  158. openDOS    lea    DOSName(pc),a1
  159.     jsr    -$0198(a6)
  160.     lea    _DOSBase(pc),a1
  161.     move.l    d0,(a1)
  162.     beq.s    noDOS
  163.     rts
  164.  
  165. _FindTask
  166.     move.l    a6,-(sp)
  167.     move.l    8(sp),a1
  168.     move.l    4,a6
  169.     jsr    -$0126(a6)
  170.     move.l    (sp)+,a6
  171.     rts
  172.  
  173. _Input    move.l    a6,-(sp)
  174.     move.l    _DOSBase,a6
  175.     jsr    -$0036(a6)
  176.     move.l    (sp)+,a6
  177.     rts
  178.  
  179. _Output    move.l    a6,-(sp)
  180.     move.l    _DOSBase,a6
  181.     jsr    -$003C(a6)
  182.     move.l    (sp)+,a6
  183.     rts
  184.  
  185. mywindow    dc.b    'RAW:0/0/400/80/tetris window',0
  186.         even
  187. _DOSBase    dc.l    0
  188. _errno        dc.l    0
  189. _stdin        dc.l    0
  190. _stdout        dc.l    0
  191. _stderr        dc.l    0
  192. initialSP    dc.l    0
  193. returnMsg    dc.l    0
  194. dosCmdLen    dc.l    0
  195. dosCmdBuf    dc.l    0
  196. argvArray    dcb.l    32,0
  197. argvBuffer    dcb.l    64,0
  198. DOSName        dc.b    'dos.library',0
  199.